﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace HS_Model.World {
    public class Map {
        public int ancho;
        public int alto;
        public String nombre;
        public int dineroInicial; /*quitar*/
        private String description;
        public Cell[][] tablero; /*alto x ancho*/
               
        /*Constructores*/
        /*constructor por defecto = FALTA*/
        public Map(int ancho,int alto,String nombre,int dineroInicial,String description) {
            this.alto = alto;
            this.ancho = ancho;
            this.nombre = nombre;
            this.dineroInicial = dineroInicial;
            this.description = description;           
 
            /*creamos las filas y columnas del mapa*/
            tablero = new Cell[alto][];
            for (int i = 0; i < alto; i++)
                tablero[i] = new Cell[ancho];                             
                        
            /*Instanciando cada Celda de forma Inicial:*/
            for (int fil = 0; fil < alto; fil++) 
                for (int col = 0; col < ancho; col++) 
                    tablero[fil][col] = new Cell(fil,col,' '); /*para cada casillero creado insatanciamos un objeto celda*/              
            
        }

        /*Metodos Sets y Gets*/
        public void setAncho(int ancho) {
            this.ancho = ancho;
        }
        public int getAncho() {
            return ancho;
        }
        
        public void setAlto(int alto) {
            this.alto = alto;
        }
        public int getAlto() {
            return alto;
        }        
        
        public void setNombre(String nombre) {
            this.nombre = nombre;
        }
        public String getNombre() {
            return nombre;
        }
        
        public void setDineroInicial(int dineroInicial) {
            this.dineroInicial = dineroInicial;
        }
        public int getDineroInicial() {
            return dineroInicial;
        }
        
        public void setDescription(String description) {
            this.description = description;
        }
        public String getDescription() {
            return description;
        }
        
        public void setTablero(Cell[][] tablero) { /*no tiene mucho sentido crear este metodo*/
            this.tablero = tablero;
        }        
        public Cell[][] getTablero() {
            return tablero;
        }

        /*Metodos Otros*/
        public void imprimeTablero() {

            Console.WriteLine("Tablero de dimensiones filas & columnas : "+alto+" X"+ancho);
            for (int col = 0; col < ancho; col++) Console.Write("__");
            Console.WriteLine();
                        
            for (int fil = 0; fil < alto; fil++) {
                for (int col = 0; col < ancho; col++) {
                    Console.Write("|"+(tablero[fil][col]).getTipoElemento());
                }
                Console.WriteLine("|");
                for (int col = 0; col < ancho; col++) Console.Write("__");
                Console.WriteLine();
            }            
        }

        public void actulizaTablero(int fil,int col,char tipo) {
            (tablero[fil][col]).setTipoElemento(tipo);
            tablero[fil][col].setX(fil);
            tablero[fil][col].setY(col);
        }

        public Cell obtenerCelda(int x, int y) {
            return tablero[x][y];
        }

        public void reiniciarMapa()  {
            for (int i = 0; i < alto; i++)
                for (int j = 0; j < ancho; j++)
                {
                    tablero[i][j].setTipoElemento(' ');
                    tablero[i][j].setX(j);
                    tablero[i][j].setY(i);
                }
        }

    }
}
